package xx.services.management.inter;

import javax.ws.rs.DefaultValue;
import javax.ws.rs.FormParam;
import javax.ws.rs.PathParam;

/**
 * 后台帐号管理服务接口
 * 
 * @Path (Constants.RESTFUL_ROOT_PATH + "/account")
 * @author chenx
 */
public interface IManagerInterface
{
    /**
     * 管理员登陆<br>
     * 注：输入错达3次后，15分钟内禁止登陆
     * 
     * @POST
     * @Path ("/login")
     * @param username
     *            -@FormParam("username")
     *            管理员帐号
     * @param password
     *            -@FormParam("password")
     *            管理员密码
     * @return
     */
    public String login(@FormParam("username") String username, @FormParam("password") String password);

    /**
     * 退出登陆
     * 
     * @GET
     * @Path ("/logout")
     * @return
     */
    public String logout();

    /**
     * 增加管理员帐号
     * 
     * @POST
     * @param username
     *            -@FormParam("username")
     *            管理员帐号
     * @param password
     *            -@FormParam("password")
     *            管理员密码
     * @param role
     *            -@DefaultValue("0")@FormParam("role_id")
     *            管理员角色
     * @param description
     *            -@FormParam("description")
     *            管理员描述
     * @return 新增的管理员实体
     */
    public String addManager(@FormParam("username") String username, @FormParam("password") String password, @DefaultValue("0") @FormParam("role_id") long roleId, @FormParam("description") String description);

    /**
     * 删除管理员。<br>
     * 
     * @DELETE
     * @Path ("/{user_id}")
     * @param userId
     *            -@PathParam("user_id")
     *            管理员ID，多个id用“_”间隔<br>
     * @return {result:number}表示成功，{result:String}表示失败，String就是失败原因描述。
     * @author dengjinye,2010-12-9
     */
    public String deleteManager(@PathParam("user_id") String userId);

    /**
     * 获取管理员详细信息
     * 
     * @GET
     * @Path ("/{user_id}")
     * @param userId
     *            -@PathParam("user_id")
     *            管理员ID，多个id用“_”间隔<br>
     * @return 管理员实体
     */
    public String getManagerInfo(@PathParam("user_id") long userId);

    /**
     * 获取管理员列表，只能获取自己有权限的管理员
     * 
     * @GET
     * @return 管理员实体列表
     */
    public String getManagerList();

    /**
     * 修改管理员
     * 
     * @PUT
     * @Path ("/{user_id}")
     * @param userId
     *            -@PathParam("user_id")
     *            管理员ID
     * @param username
     *            -@FormParam("username")
     *            管理员帐号
     * @param password
     *            -@FormParam("password")
     *            管理员密码
     * @param role
     *            -@FormParam("role")
     *            管理员角色，不能修改大于自己的权限
     * @param description
     *            -@FormParam("description")
     *            管理员描述
     * @return 新的管理员实体
     */
    public String updateManager(@PathParam("user_id") long userId, @FormParam("username") String username, @FormParam("password") String password, @FormParam("role_id") long roleId, @FormParam("description") String description);

    /**
     * 获取角色列表，只能获取小于或等于自己角色的角色列表
     * 
     * @GET
     * @Path ("/role")
     * @return 角色列表
     */
    public String getRoles();
}
